VB 加油站

A 入门技巧
B API
C 用户界面
D 网络
E 控件
F 文件系统
H 多媒体
I 数据库
J 程序应用
K 外设
Z 其他

下载区域
技术文档
原创空间
写留言
看留言
VB讨论
友情连接
回到首页

Win加油站

E-Mail

 

K 外设

C 打印

004  打印MsChart之类的控件 98-11-15

MsChart 之流的控件都没有提供一个直接打印的方法, 使用 PrintForm 会把整个表单打出来, 如果只要打印该控件, 方法是利用一个 PictureBox。
例如在 Form1 中有一个 MSChart1 和一个 Command1, 增加一个 Picture1, 在Command1 的 Click 中增加下面的代码:
MSChart1.EditCopy
Picture1.Picture = Clipboard.GetData()
Printer.Print " "
Printer.PaintPicture Form2.Picture1.Picture, 0, 0
Printer.EndDoc到页首

003 用 API 打开打印对话框 98-9-06

使用通用对话框控件当然可以打开打印对话框, 不过要浪费更多的资源和增加了一个 OCX 部件。 而用 API 会高效。
声明:
Declare Function PRINTDLG Lib "comdlg32.dll" Alias _
"PrintDlgA" (pPrintdlg As PRINTDLG) As Long
Type PRINTDLG
lStructSize As Long
hwndOwner As Long
hDevMode As Long
hDevNames As Long
hdc As Long
flags As Long
nFromPage As Integer
nToPage As Integer
nMinPage As Integer
nMaxPage As Integer
nCopies As Integer
hInstance As Long
lCustData As Long
lpfnPrintHook As Long
lpfnSetupHook As Long
lpPrintTemplateName As String
lpSetupTemplateName As String
hPrintTemplate As Long
hSetupTemplate As Long
End Type
使用:
Private Sub Command1_Click()
Dim p As PRINTDLG
p.lStructSize = Len(p)
p.hwndOwner = Me.hWnd
p.nFromPage = 1
p.nToPage = 1
p.nMinPage = 1
p.nMaxPage = 1
p.nCopies = 1
x = PRINTDLG(p)
Printer.Print Text1.Text
End Sub 到页首

002 在打印字符串时自动换行 98-8-29

感谢 shijia  的代码测试。
其中 len1 为打印的宽度, Str 为打印的文本。

  Do While Len(Str) > 0
    str1 = Str
    Do While len1 > 0 And Printer.TextWidth(str1) > len1
      str1 = Left(str1, Len(str1) - 1)
    Loop
    Printer.Print str1 '打印
    If Len(str1) = 0 Then Exit Do '不匹配
    Str = Mid(Str, Len(Str1)+1)  '截断!
  Loop 到页首

001 让打印机只打印一行

在 Win95 下,只有在使用 EndDoc 或 NewPage 时,打印机才开始打印,而且每次都要换页。使用以下的方法,可以只打印一行,并且可以把打印机的控制字符也直接发到打印机。
注意:如果打印机无汉字库,不能输出中文。
  Open "PRN" For Output As #1
    Print #1, "一行"到页首

 

知/的/更/多 做/的/更/好